/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.util.*;
//import java.util.Scanner;

public class Conjuntos {

    
   //main
   
    public static void main(String[] args) {
	  //intLista;
        
        //atributos
   String strMensaje;
	String dato;
	String op;
 String nombre;
	int contj = 0;
	int contw = 0;
	int contc = 0;
	boolean ver;
        // TODO code application logic here
        //para pedir un dato desde teclado
		Scanner  scan = new Scanner(System.in);
                //utilizando del metodo factory de la clase factoryconjuntos
        FactoryConjuntos _Factory = new  FactoryConjuntos();
		System.out.println("Ingrese el tipo de ordenamiento que desea tener en su conjunto"
                        + "\n 1.LinkedHashSet 2.hashset 3.treeset  ");
		dato = scan.next();
                
                //inicio del menu
		while(!dato.equals("1") && !dato.equals("2") && !dato.equals("3")){
			System.out.println("Ingrese una opcion válida ");
			dato = scan.next();
			//scan.nextLine();
		}
                //realizacion de JavaCollectionFramework
        Set<String> java = _Factory.ObtenerSet(dato);
		Set<String> web = _Factory.ObtenerSet(dato);
		Set<String> cell = _Factory.ObtenerSet(dato);
		Set<String> pivot = _Factory.ObtenerSet(dato);
		System.out.println("desea ingresar desarolladores a el conjunto de  java, celulares o web? "
                        + " \n si o no");
	    String confir = scan.next();
		confir = confir.toLowerCase();
                //programacion defensiva
		while(!confir.equals("si") && !confir.equals("no")){
		System.out.println("ingrese una opcion valida ");
		
		confir = scan.next();
		confir = confir.toLowerCase();
		}
		//basicamente todo lo que hace despues es lo mismo en las opciones
		//parte de otra ocpiones del menu donde ingresa el desarrollador
		if (confir.equals("si")){
		
		while(confir.equals("si")){
		System.out.println("ingrese el nombre del desarollador de java ");
		nombre = scan.next();
		
		while(confir.equals("si")){
		System.out.println("¿A qué conjunto desea ingresarlo?"
                        + "\n1.java \n 2.celular \n 3.web \n ingrese el numero de la opción que desea");
		
		
		op = scan.next();
		while(!op.equals("1") && !op.equals("2") && !op.equals("3")){
			System.out.println("ingrese una opción valida ");
			op = scan.next();
			//scan.nextLine();
		}
		
		if(op.equals("1")){
		
		//union de conjuntos
		java.add(nombre);
		contj = java.size();
		}
		if(op.equals("2")){
	
		cell.add(nombre);
		
		contc = cell.size();
		}
		if(op.equals("3")){
		
		web.add(nombre);
		
		contw = web.size();
		
		}
		
		System.out.println("desea ingresarlo a  otro conjunto? "
                        + "\n si o no ");
		confir = scan.next();
		confir = confir.toLowerCase();
		while(!confir.equals("si") && !confir.equals("no")){
		System.out.println("ingrese una opcion valida ");
		
		confir = scan.next();
		confir = confir.toLowerCase();
		
		}
		}
		System.out.println("¿Desea ingresar otro desarollador? si o no ");
		confir = scan.next();
		confir = confir.toLowerCase();
		while(!confir.equals("si") && !confir.equals("no")){
		System.out.println("ingrese una opcion valida ");
		
		confir = scan.next();
		confir = confir.toLowerCase();
		}
	
		
		}
		//union de conjuntos
		pivot.addAll(java);
		pivot.retainAll(cell);//
		pivot.retainAll(web);
		
		System.out.println("\n programadores con experiencia en java, celulares y web: ");
        Iterator _Iter = pivot.iterator();
        while(_Iter.hasNext()){
            System.out.println(_Iter.next()); 
            
        }
		
		pivot.clear();
		
		pivot.addAll(java);
		pivot.removeAll(web);
		
		System.out.println("\n Programadores con experiencia en java y no en web: ");
		_Iter = pivot.iterator();
        while(_Iter.hasNext()){
            System.out.println(_Iter.next()); 
            
        }
		//eleminando elemento
		pivot.clear();
		//union
		pivot.addAll(web);
		pivot.retainAll(cell);
		pivot.removeAll(java);
		
		System.out.println("\n Programadores con experiencia en celular y  en web, pero no en java : ");
		_Iter = pivot.iterator();
        while(_Iter.hasNext()){
            System.out.println(_Iter.next()); 
            
        }
		
		
		pivot.clear();
		
		pivot.addAll(web);
		pivot.addAll(cell);
		pivot.removeAll(java);
		
		System.out.println("\n Programadores con experiencia en celular o  en web, pero no en java : ");
		_Iter = pivot.iterator();
        while(_Iter.hasNext()){
            System.out.println(_Iter.next()); 
            
        }
		
		pivot.clear();
		pivot.addAll(web);
		ver = web.containsAll(java);
		if(ver == true){
		System.out.println("Java si es un subconjunto de web");
		
		} 
		else{
		System.out.println("Java no es un subconjunto de web");
		}
		
		
		if((contj>contc) && (contj>contw)){
		
			System.out.println("el conjunto con mayor numero de integrantes es el de java \n se lista sus integrantes a continuacion ");
			_Iter = java.iterator();
        while(_Iter.hasNext()){
            System.out.println(_Iter.next()); 
            
        }
		}
		
		else if((contc>contj) && (contc>contj)){
		
			System.out.println("el conjunto con mayor numero de integrantes es el de celular \n se lista sus integrantes a continuacion ");
			_Iter = cell.iterator();
        while(_Iter.hasNext()){
            System.out.println(_Iter.next()); 
            
        }
		}
		
		else{
		System.out.println("el conjunto con mayor numero de integrantes es el de web \n se lista sus integrantes a continuacion ");
			_Iter = web.iterator();
        while(_Iter.hasNext()){
            System.out.println(_Iter.next()); 
            
        }
		
		}
		
		
		}
		
		
	else{
		
	System.out.println("gracias por utilizar el programa, tenga un feliz día ");
	
	}
    }
}
